<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Projetos extends CI_Controller {

    //public $cor_default = "#00959b"; //#006782"; 00959b 389240 b94a48


    public function __construct() {
        parent::__construct();
        $this->load->model('usuarios_model', 'users');
        $this->load->model('cadastros_model', 'cadastros');
        $this->load->model('projetos_model', 'projetos');
        $this->load->library('form_validation');
        $this->aluno = $this->session->userdata('aluno');
    }

    public function index() {
        $this->users->clienteLogado();
        $data['categorias'] = $this->projetos->getCategorias('1');
        if (!is_null($data['categorias'])){
            foreach ($data['categorias'] as $key => $categoria) {
                $data['projetos'][$categoria->CODIGO] = $this->projetos->getProjetosByCatg($categoria->CODIGO);
            }
        }
        $data['projetosNovos']=$this->projetos->projetosRecentes(6);
        //die(print_r($data['projetosNovos']));
        $this->load->view('central/projetos_disponiveis', $data);
    }

    public function detalheProjeto($COD_PROJETO) {
        $data['projeto'] = $this->projetos->getProjetosById($COD_PROJETO);
        $data['disciplinas'] = $this->cadastros->getDisciplinasProjetos($COD_PROJETO);
        
        if (!is_null($data['disciplinas'])){
            foreach ($data['disciplinas'] as $key => $disciplina) {
                $data['detalhebibliografia'][$disciplina['CODIGO']] = $this->cadastros->getBibliografiaByDisciplina($disciplina['CODIGO']);
            }
        }

        //$data['disciplinas'] = $this->cadastros->getDisciplinas();
        echo $this->load->view('central/detalheProjeto', $data);
    }

    public function teste() {
        $this->load->view('central/per_proj');
    }

    public function cadastroEfetuado() {
        $this->load->view('central/cadastroEfetuado');
    }

    public function enviarEmailCadastro($dados) {

        $config['protocol'] = 'sendmail';
        $config['mailpath'] = '/usr/sbin/sendmail';
        $config['charset'] = 'utf-8';
        $config['mailtype'] = 'html';
        $config['wordwrap'] = TRUE;

        $this->email->initialize($config);
        $this->email->from('noreply@cursultoria.com.br', 'Cursultoria');
        $this->email->to($dados['EMAIL']);
        //$this->email->to("lucas.codemax@gmail.com");
        //$this->email->Bcc($userKey->RESPONSAVEL);
        $this->email->subject("CURSULTORIA - ATIVAÇÃO DE CONTA");

//            $mensagem = "<b>Nome:</b>" . $this->input->post('nome') . "<br />";
//            $mensagem .= "<b>Email:</b>" . $this->input->post('email') . "<br />";
//            $mensagem .= "<b>Telefone:</b>" . $this->input->post('telefone') . "<br />";
//            $mensagem .= "<b>Assunto:</b>" . $this->input->post('assunto') . "<br />";
//            $mensagem .= "<b>Mensagem:</b>" . $this->input->post('mensagem') . "<br />";

        $mensagem = $this->load->view('email/ativacaoCadastro', $dados);

        $this->email->message($mensagem);
        $this->email->send();
    }

    public function gravarTopicosUsuario() {        
        
        $tempo=$this->input->post('tempo');
        $descricao=$this->input->post('descricao');
        $tipo=$this->input->post('tipo');
        $codDisciplina=$this->input->post('disciplinaTP');
        
        if ($this->input->post('aula') ){
            $aulas=$this->input->post('aula');
        foreach ($aulas as $key => $aula) {
            echo $aula ."-". $tempo[$key]."-".$descricao[$key]."-".$tipo[$key]."-".$codDisciplina[$key]. "<br>";
        }}
        
        $cod_disciplina = $this->input->post();
        $projeto = $this->input->post('cod_projeto');
        $codBanca= $this->input->post('cod_banca');
       
        $dados = array('COD_PROJETO' => $projeto,
            'COD_ALUNO' => $this->aluno);

        $this->cadastros->novoProjetoAluno($dados);
        $this->apagarTopicosNaoEstudados();
        foreach ($cod_disciplina as $key => $value) {
           
            $info = explode("_", $value);
            if (isset($info['1'])) {
                $b = $info['1'];
            }
            if (isset($info['3'])) {
                $d = $info['3'];
                 $this->insertTempoDisciplina($d);
                $topicos = $this->cadastros->getTopicosByDisciplina($d,$projeto,$codBanca); 
              
                $prioridade_disciplina=$this->cadastros->getPrioridadeDisciplina($d,$projeto); 
                  
                
                $this->inserirTopicos($topicos, $b,$projeto,$prioridade_disciplina);
            }
        }
        
        $this->criarDetalheTopicos();
        redirect(base_url()."aluno/ciclo");
    }
    public function apagarTopicosNaoEstudados(){
        $this->cadastros->apagarTopicos($this->aluno);
    }
    public function inserirTopicos($topicos, $bibliografia,$projeto,$prioridade_disciplina) {
        foreach ($topicos as $topico) {
            $dados = array('COD_ALUNO' => $this->aluno,
                'COD_TOPICO' => $topico['CODIGO'],
                'COD_BIBLIOGRAFIA' => $bibliografia,
                'PRIORIDADE'=>$topico['PRIORIDADE'],
                'PRIORIDADE_DISCIPLINA'=>$prioridade_disciplina,
                'COD_TOPICO_BANCA'=>$topico['COD_TOPICO_BANCA'],
                'COD_PROJETO'=>$projeto,
            );
            $this->cadastros->gravarTopico($dados);
            // echo $topico['CODIGO']."<br>";
           
        }
         
            
    }
    public function insertTempoDisciplina($cod_disciplina){
        $data['info_tempo'] = $this->cadastros->getTempo($this->aluno);  
        $disciplina=$this->cadastros->getDisciplinas($cod_disciplina);
        $fator=1; //fator de multiplicação para a velodidade
        if($disciplina->EXATA==1){ //multiplicar por dois se for exata
            $fator=2;
        }
        $velocidade = ($data['info_tempo']->VELOCIDADE)*$fator; 
        
      
      
        $dadosDisciplina['COD_ALUNO']=$this->aluno;
        $dadosDisciplina['COD_DISCIPLINA']=$cod_disciplina;
        $dadosDisciplina['VELOCIDADE']=$velocidade;
      
       $this->cadastros->insertVelocidadeDisciplina($dadosDisciplina);
       
    }
    public function criarDetalheTopicos() {
       // die('parei aqui');
        $data['info_tempo'] = $this->cadastros->getTempo($this->aluno);
        $data['topicos'] = $this->cadastros->getTopicoUsuarios($this->aluno, 0);
        
     
       // $velocidade = ($data['info_tempo']->VELOCIDADE); 
        
       /*velocidade sera carregado de acordo com a disciplina*/
        if (!is_null($data['topicos'])) {
            foreach ($data['topicos'] as $topicos) {
                $velocidade=  $this->getVelocidadeByDisciplinaByTopico($topicos->COD_TOPICO);
//                echo "velocidade. ";
                //die();
                $tempo=  $this->calculaTempo($topicos->TIPO,$topicos->QUANT_PAGINAS,$topicos->PAGINAS,$velocidade);
               
                /*if ($topicos->TIPO == "Leitura") {
                    $tempo = $topicos->QUANT_PAGINAS * $velocidade;
                } else {
                    $tempo = $topicos->PAGINAS;
                }*/
                $dados = array(
                    'TEMPO_PREVISTO' => $tempo,
                    //'CICLO' => $novo_ciclo
                );
                
                $this->cadastros->updateTopicoUsuario($dados,$topicos->CODIGO);
                
            }
        } else {
            return null;
        }
        $this->criarCiclos(true);
    }
    public function alterarDetalheTopicos() {
       // die('parei aqui');
        $data['info_tempo'] = $this->cadastros->getTempo($this->aluno);
        $data['topicos'] = $this->cadastros->getTopicoUsuarios($this->aluno, 0);
        
     
       // $velocidade = ($data['info_tempo']->VELOCIDADE); 
        
       /*velocidade sera carregado de acordo com a disciplina*/
        if (!is_null($data['topicos'])) {
            foreach ($data['topicos'] as $topicos) {
                $velocidade=  $this->getVelocidadeByDisciplinaByTopico($topicos->COD_TOPICO);
//                echo "velocidade. ";
                //die();
                $tempo=  $this->calculaTempo($topicos->TIPO,$topicos->QUANT_PAGINAS,$topicos->PAGINAS,$velocidade);
               
                /*if ($topicos->TIPO == "Leitura") {
                    $tempo = $topicos->QUANT_PAGINAS * $velocidade;
                } else {
                    $tempo = $topicos->PAGINAS;
                }*/
                $dados = array(
                    'TEMPO_PREVISTO' => $tempo,
                    //'CICLO' => $novo_ciclo
                );
                
                $this->cadastros->updateTopicoUsuario($dados,$topicos->CODIGO);
                
            }
        } else {
            return null;
        }
        
    }
    
    public function getVelocidadeByDisciplinaByTopico($idTopico){        
            $velocidade = $this->cadastros->getVelocidadeByDisciplinaByTopico($this->aluno,$idTopico);
            
            
         return $velocidade['VELOCIDADE'];
    }
    public function calculaTempo($tipo,$quant_paginas,$pagina_video,$velocidade){
        if ($tipo == "Leitura") {
            return  $quant_paginas * $velocidade;
        } else {
            return $pagina_video;
        }
    }
    public function refazerCiclo($codigos){
        $codigoArray=  explode("|", urldecode($codigos));
        foreach ($codigoArray as $codigo) {
            $dadosAtuais=$this->cadastros->getTopicosUsuariobyId($codigo);
            $dados = array('REFEITO' => '1');          
            $this->cadastros->updateTopicoUsuario($dados,$dadosAtuais->CODIGO);
            
            unset($dadosAtuais->CODIGO,$dadosAtuais->TEMPO_ESTUDO,$dadosAtuais->DIFICULDADE,$dadosAtuais->CICLO,$dadosAtuais->SITUACAO,$dadosAtuais->DATA_ESTUDO,$dadosAtuais->DATA_INICIO_CICLO);
            //$this->printArray($dadosAtuais);
            $dados=(array)$dadosAtuais;
           //  $this->printArray($dados);
            $id=$this->cadastros->gravarTopico($dados,'refazer');
        }
        $mensagem='<div class="alert alert-success" style="font-size:14px;">O(s) tópico(s) selecionado(s) serão inserido em seu próximo ciclo.</div>';
        $this->session->set_flashdata('mensagem', $mensagem);
        redirect('aluno/ciclo');
    }
    public function atualizarCicloUsuario(){
        $this->criarCiclos();
         redirect('aluno/ciclo');
    }
    public function criarCiclos($primeiro=false){
       
        $data['info_tempo'] = $this->cadastros->getTempo($this->aluno);
        $topicos=$this->cadastros->getTopicosRestante($this->aluno);
        
        $tempo_disponivel = ($data['info_tempo']->TEMPO_DISPONIVEL) * 3600; //pegando tempo tiponivel e convertendo para segundos
        $tempo_restante = ($data['info_tempo']->TEMPO_DISPONIVEL) * 3600; //De inicio o tempo restante é igual ao tempo disponivel
         $ciclo = $this->cadastros->maiorCiclo($this->aluno);
         $data_inicio=$this->cadastros->DataInicio($this->aluno);
        
         $novo_ciclo = $ciclo->CICLO + 1;
       
         if ($primeiro==false){ 
             if ($this->verificaPrazo($data_inicio->DATA_INICIO_CICLO)){//Verifica se o prazo de uma semana do ciclo já foi completada
                    $this->recalcularTempoDisciplina(); 
             } 
        }
        foreach ($topicos as $valor) {
            if ($primeiro==false){                
                if (!$this->verificaPrazo($data_inicio->DATA_INICIO_CICLO)){//Verifica se o prazo de uma semana do ciclo já foi completada
                    
                    break;} 
                
            }
            
            if ($valor->SITUACAO==0 && $valor->CICLO > 0){break;}
            
            $tempo_restante = $tempo_restante - $valor->TEMPO_PREVISTO;
            $dados = array(
                    'CICLO' => $novo_ciclo,
                    'DATA_INICIO_CICLO'=>date('Y-m-d'),
                    //'TEMPO_PREVISTO'=>$novoTempo //novoTempo recalculado a cada Ciclo;
                );
          
            $this->cadastros->updateTopicoUsuario($dados,$valor->CODIGO);
            if ($tempo_restante <= 0) { 
                
                    break;
                }
        } 
        
    }
    public function recalcularTempoDisciplina(){
        // alterar a velocidade da disciplina
          $novoTempo=$this->cadastros->recalcularTempoDisciplina($this->aluno);
          $dados['COD_ALUNO']=$this->aluno;
          foreach ($novoTempo as $valor) {
            $dados['COD_DISCIPLINA']=$valor['COD_DISCIPLINA'];
            $dados['VELOCIDADE']=round($valor['NovoTempo']);
            $this->cadastros->alterarTempoDisciplina($dados)  ;
            //echo $valor['COD_DISCIPLINA']."-".round($valor['NovoTempo']). "<br>";
              
          }
        // recriar os detalhes do topico
         $this->alterarDetalheTopicos();
       //die('estou aqui neste momento');
    }
    public function alteracaoCiclo(){
        //$this->printArray($this->input->post());
        $avaliacao=$this->input->post('avaliacao');
        $minuto=$this->input->post('minutoReal');
        $hora=$this->input->post('horaReal');
        $vazio=0;
        //$this->printArray($minuto);
        
        foreach ($avaliacao as $chave => $valor) {
          //  echo $chave."<br>";
            $array= strpos( $chave,"|");
           // $codigo=$array===true? explode("|", $chave):$chave;
            if ($array===false){
                $codigo= $chave; 
                $num_elementos=1;
            }else{
                $codigo= explode("|", $chave);
                $num_elementos=  count($codigo);
            }
            
            if ($valor!=""){
                
                
                $tempo_estudoTotal=($minuto[$chave]*60)  +($hora[$chave]*3600);
                 $tempo_estudo=$tempo_estudoTotal/$num_elementos;
                
                if ($tempo_estudo!=0){
                    $vazio++;
                    /*'CODIGO' =>$codigo,*/
                     $dados = array(
                    'DATA_ESTUDO'=>date('Y-m-d'),
                    'TEMPO_ESTUDO'=>$tempo_estudo,
                    'DIFICULDADE'=> $valor,
                         'SITUACAO'=>1
                );
                     $this->criarCiclos();
                     
                    $this->cadastros->updateTopicoUsuario($dados,$codigo);
                }
            }
        }
            $mensagem='<div class="alert alert-success" style="font-size:14px;">As alterações foram salvas com sucesso</div>';
        if ($vazio==0){
             $mensagem='<div class="alert alert-danger" style="font-size:14px;">Você deve selecionar a dificuldade e/ou tempo de real de estudo!.</div>';
        }
       
        $this->session->set_flashdata('mensagem', $mensagem);
        redirect('aluno/ciclo');
    }
    public function verificaPrazo($data_inicio){
        
        $dataAtual = date('Y-m-d');
        
        $diff = date_diff(date_create($dataAtual),date_create($data_inicio) );
        $dif_dias =$diff->days;
//        $this->printArray( date_create($dataAtual));
//      $this->printArray( date_create($data_inicio));
//        die('parando aqui');
        
        if ($dif_dias<=6){
          return false;
        }
        return true;
        
    }
    public function printArray($array) {
        echo "<pre>";
        print_r($array);
        echo "</pre>";
    }

}
